<?php
namespace plugin\ky_shouyin\app\controller;

use support\Request;
use support\Response;
use support\Db;

class BaseController
{
    /**
     * 构造函数
     */
    public function __construct()
    {
        // 基础控制器构造函数
    }

    /**
     * 渲染视图
     */
    protected function view($template, $vars = [])
    {
        // 获取视图内容
        $content = view($template, $vars);
        
        // 如果是后台页面，且不是弹窗页面，使用后台布局
        if (strpos($template, 'admin/') === 0 && !in_array($template, [
            'admin/member/add',
            'admin/member/edit',
            'admin/member/recharge',
            'admin/member/detail',
            'admin/store/add',
            'admin/store/edit',
            'admin/staff/add',
            'admin/staff/edit',
            'admin/goods/add',
            'admin/goods/edit',
            'admin/goods/category_add',
            'admin/goods/category_edit',
            'admin/member/getUnusedCards',
            'admin/member/getUnusedCards',
            'admin/member/select_card',
            'admin/order/detail',
            'admin/order/rechargeDetail',
            // 其他需要排除布局的页面
        ])) {
            $content = view('layout/admin', ['content' => $content->rawBody()]);
        }
        // 如果是前台页面，不需要额外布局，因为已经在模板中包含了
        else if (strpos($template, 'front/') === 0) {
            return $content;
        }
        
        return $content;
    }

    /**
     * 返回JSON响应
     */
    protected function json($data)
    {
        return json($data);
    }

    /**
     * 添加操作日志
     * @param string $action 操作动作
     * @param string $content 操作内容
     * @return bool
     */
    protected function addOperateLog($action, $content)
    {
        try {
            $user = session('user');
            return Db::table('ky_operate_log')->insert([
                'admin_id' => $user['id'] ?? 0,
                'admin_name' => $user['username'] ?? '',
                'action' => $action,
                'content' => $content,
                'ip' => request()->getRealIp(),
                'created_at' => date('Y-m-d H:i:s'),
                'updated_at' => date('Y-m-d H:i:s')
            ]);
        } catch (\Exception $e) {
            // 记录日志失败不影响主要业务
            return false;
        }
    }
} 